import axios from "axios";
import { tokenMet } from "../store/user";
import { ElMessage } from "element-plus";
import router from "../router";
// import { getToken } from "../api/home"; //请求token的方法，例如：getToken
//双token无感刷新
const axiosConfig: any = axios.create({
  baseURL: "/api",
  headers: { "Content-Type": "application/json" },
});
axiosConfig.interceptors.request.use(
  (config: any) => {
    if (tokenMet().token) {
      config.headers["Access-Token"] = `${tokenMet().token}`;
    }
    // 添加时间戳参数
    const timestamp = new Date().getTime();
    if (!config.params) {
      config.params = {}; // 确保 params 存在
    }
    config.params.timestamp = timestamp;
    return config;
  },
  (error: any) => Promise.reject(error)
);
let isRefreshing = false;
//重试队列
let requests: any = [];
axiosConfig.interceptors.response.use(
  (response: any) => {
    return response;
  },
  (error: any) => {
    // token过期，用refreshToken刷新token操作
    // if (error.response.status === 401) {
    //   if (!isRefreshing) {
    //     isRefreshing = true;
    //     return getToken({
    //       refreshToken: tokenMet().refreshToken,
    //     })
    //       .then((res: any) => {
    //         if (res.status === 200) {
    //           tokenMet().getToken(res.data.accessToken, res.data.refreshToken);
    //           res.config.headers["Access-Token"] = `${tokenMet().token}`;
    //           requests.forEach((cb: any) => cb(tokenMet().token));
    //           requests = [];
    //           return axiosConfig(res.config);
    //         }
    //       })
    //       .catch((err: any) => {
    //         ElMessage({
    //           message: "登录过期，请重新登录",
    //           type: "error",
    //           duration: 1000,
    //           onClose() {
    //             window.location.reload();
    //           },
    //         });
    //         tokenMet().removeToken();
    //         router.push("/login");
    //         return Promise.reject(err);
    //       });
    //   } else {
    //     return new Promise((resolve) => {
    //       requests.push((token: any) => {
    //         error.config.headers["Access-Token"] = token;
    //         resolve(axiosConfig(error.config));
    //       });
    //     });
    //   }
    // }
    return Promise.reject(error);
  }
);
export default axiosConfig;
